﻿<html xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:xanx="http://schemas.microsoft.com/developer/xanx/2005"><head><META http-equiv="Content-Type" content="text/html; charset=utf-8"><META NAME="save" CONTENT="history"><title>Robot Game</title>
<style><!--
/***********************************************************
 *             SCRIPT-SUPPORTING STYLES
 ***********************************************************/

/* Defines the userData cache persistence mechanism. */
.userDataStyle
{
	behavior: url(#default#userData);
}

/* Used to save the scroll bar position when navigating away from a page. */
div.saveHistory
{
	behavior: url(#default#saveHistory);
}

/* Formats the expand/collapse images for all collapsible regions. */
img.toggle
{
	border: 0;
	margin-right: 5;
}

/* Formats the Language filter drop-down image. */
img#languageFilterImage
{
	border: 0;
	margin-left: 0;
	vertical-align: middle;
}

/* Formats the Members Options filter drop-down image. */
img#membersOptionsFilterImage
{
	border: 0;
	margin-left: 0;
	vertical-align: middle;
}

/* Formats the Collapse All/Expand All images. */
img#toggleAllImage
{
	margin-left: 0;
	vertical-align: middle;
}

/* Supports XLinks */
MSHelp\:link
{
 	text-decoration: underline;
	color: #0000ff; 
	hoverColor: #3366ff;
	filterString: ;
}


body
	{
	background:	#FFFFFF;
	color: #000000;
	font-family:	Verdana;
	font-size: medium;
	font-style: normal;
	font-weight: normal;
	margin-top:	0;
	margin-bottom:	0;
	margin-left:	0;
	margin-right:	0;
	width:	100%;
	/*font-size: 110%;*/
	}

div.section
	{
	margin-left: 15px;
	}

div.hxnx5
	{
	margin-left: 1.5em;
	}

/* Font for all headings */	
h1, h2, h3, h4, h5, h6
	{
	font-family: Verdana, Arial, Helvetica, sans-serif;
	margin-top: 18;
	margin-bottom: 8; 
	font-weight: bold;
	}
h1
	{
	font-size: 130%;
	color: #003399;
	}
div#scrollyes h1 /* Changes font size for full-scrolling topic */
	{
	font-size: 150%;
	}
h2
	{
	font-size: 125%;
	}
h3
	{
	font-size: 115%;
	margin-top: 9;
	margin-bottom: 4; 
	}
h4
	{
	font-size: 115%;
	margin-top: 9;
	margin-bottom: 4; 
	}
h5
	{
	font-size: 100%;
	margin-top: 9;
	margin-bottom: 4; 
	}
h6
	{
	font-size: 100%;
	margin-top: 9;
	margin-bottom: 4; 
	}

ul p, ol p, dl p
	{
	margin-left: 0em;
	}

p
	{
	margin-top: .6em;
	margin-bottom: .6em;
	}
	
td p
	{
	margin-top: 0.0em;
	margin-bottom: 0.6em;
	}

dd p
	{
	margin-top: 0.0em;
	margin-bottom: 0.6em;
	}

.image
	{
	text-align: center;
	}

dl
	{
	margin-top: 0em; 
	margin-bottom: 1.3em;
	}

dd
	{
	margin-bottom: 0em;
	margin-left: 0;
	}

dl.glossary dd 
{
	margin-bottom: 0em;  
	margin-left: 1.5em; 
}

dt
	{
	margin-top: .6em;
	margin-bottom: 1;
	}

ul, ol
	{
	margin-top: 0.6em;
	margin-bottom: 0.6em; 	
	}
	
ol
	{
	margin-left: 2.5em; 
	
	}	
	
ul
	{
	list-style-type: disc; 
	margin-left: 1.9em; 
	}

li
	{
	margin-bottom: 0.4em;
	}

ul ol, ol ol
	{
	list-style-type: lower-alpha;
	}

pre
	{
	margin-top: .6em;
	margin-bottom: .6em; 
	}

pre
	{
	font: 105% Lucida, mono; 
	color: #000066;
	}

code
{
	font-family: Monospace, Courier New, Courier;
	font-size: 105%;
	color:	#000066;
}

table.userdata td 
	{
	background: #ffffff;
	background-color: #F5F5F5;
	border-color: #ffffff;
	border: none;
	}	
table.clsWarning
	{
	background: #ffffff;
	padding: 0px;
	margin: 0px;
	border: none;
	}
table.clsWarning td
	{
	padding: 0px;
	margin: 0px;
	background: #ffffff;
	vertical-align: middle;
	font-size: 70%;
	}

div#mainSection table
	{
	width: 98%;
	background: #ffffff;
	margin-top: 5px;
	margin-bottom: 5px;
	}

div#mainSection table th
	{ 
	padding: 5px 6px;
	background: #EFEFF7;
	text-align: left;
	font-size: 70%;
	vertical-align: bottom;
	border-bottom: 1px solid #C8CDDE;
	}
div#mainSection table td
	{ 
	padding: 5px 5px;
	background: #F7F7FF;
	vertical-align: top;
	font-size: 70%;
	border-bottom: 1px solid #D5D5D3;
	}

div#syntaxCodeBlocks table th
	{
	padding: 1px 6px;
	color: #000066;
	}

div#syntaxCodeBlocks table td
	{
	padding: 1px 5px;
	}

/* Applies to the running header text in the first row of the upper table in the
   non-scrolling header region. */
span#runningHeaderText
{
	color: #003399;
	font-size: 90%;
	padding-left: 13;
}

/* Applies to the topic title in the second row of the upper table in the
   non-scrolling header region. */
span#nsrTitle
{
	color: #003399;
	font-size: 120%;
	font-weight: 600;
	padding-left: 13;
}

/* Applies to everything below the non-scrolling header region. */
div#mainSection
{
	font-size: 70%;
	width: 100%;
}

/* Applies to everything below the non-scrolling header region, minus the footer. */
div#mainBody
{
	font-size: 90%;
	margin-left: 15;
	margin-top: 10;
	padding-bottom: 20;
}

/* Adds right padding for all blocks in mainBody */
div#mainBody p, div#mainBody ol, div#mainBody ul, div#mainBody dl
{
	padding-right: 5;
}

div#mainBody div.alert, div#mainBody div.code, div#mainBody div.tableSection
{
	width:98.9%;
}

div.alert p, div.code p
{
	margin-top:5;
	margin-bottom:8;
}

/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Begin Note Styles - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
div#mainSection div.alert table
{
	border: 0;
}

div#mainSection div.alert table th
{
	padding-top: 0;
	padding-bottom: 0;
	padding-left: 5;
	padding-right: 5;
}

div#mainSection div.alert table td
{
	padding-left: 5;
	padding-right: 5;
}

img.note
{
	border: 0;
	margin-left: 0;
	margin-right: 3;
}
/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - End Note Styles - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/

/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Begin Non-scrolling Header Region Styles - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
/* Applies to the entire non-scrolling header region. */
div#header
{
	background-color: #D4DFFF;
	padding-top:	0;
	padding-bottom:	0;
	padding-left:	0;
	padding-right:	0;
	width:	100%;
}

/* Applies to both tables in the non-scrolling header region. */
div#header table
{
	margin-top:	0;
	margin-bottom: 0;
	border-bottom-color: #C8CDDE;
	border-bottom-style: solid;
	border-bottom-width: 1;
	background: #D4DFFF;
	width:	100%;
}

/* Applies to cells in both tables in the non-scrolling header region. */
div#header table td
{
	color: #0000FF;
	font-size: 70%;
	padding-right: 20;
	padding-top: 1;
	padding-bottom: 1;
	border: none;
	background: #D4DFFF;
}

/* Applies to the last row in the upper table of the non-scrolling header region. Text 
   in this row includes See Also, Constructors, Methods, and Properties. */
div#header table tr#headerTableRow3 td
{
	padding-bottom: 2;
	padding-top: 5;
	padding-left: 15;
}

/* Applies to the lower table in the non-scrolling header region. Text in this table
   includes Collapse All/Expand All, Language Filter, and Members Options. */
div#header table#bottomTable
{
	border-top-color: #FFFFFF;
	border-top-style: solid;
	border-top-width: 1;
	text-align: left;
	padding-left: 15;
}


blockquote
	{
	margin-left: 3.8em;
	margin-right: 3.8em;
	margin-top: .6em;
	margin-bottom: .6em;
	}

sup
	{
	text-decoration: none;
	font-size: smaller; 
	}

a:link
	{
	color: #0000FF;
/*    font-weight: bold */
	}
	
a:visited
	{
	color: #0000AA;
/*    font-weight: bold	*/
	}
	
a:hover
	{
	color: #3366FF;
/*    font-weight: bold */
	}
	
.label
	{
	font-weight: bold; 
	margin-top: 1em;
	margin-left: -26px;
	}
	
.tl
	{
	margin-bottom: .75em; 
	}
	
.atl
	{
	padding-left: 1.5em;
	padding-bottom: .75em; 
	}
	
.cfe
	{
	font-weight: bold; 
	}
	
.mini
	{
	font-size: smaller;
	}
	
.dt
	{
	margin-bottom: -.6em; 
	}
	
.indent
	{
	margin-left: 1.9em; 
	margin-right: 1.9em;
	}

.product
	{
	text-align: right;
	color: #333333;
	font-size: smaller;
	font-style: italic;
	}

.buttonbarshade
	{
	position: relative;
	margin: 0;
	left: 0px;
	top: 2;
	width: 50%;
	height: 40px;
	}

.buttonbartable
	{
	position: absolute;
	margin: 0;
	padding:0;
	border:0;
	left:0px;
	top: 2;
	width: 100%;
	height: 40px;
	}

/* background color, font for header */ 
table.buttonbartable td, table.buttonbarshade td
	{
	background: #ffffff; /*#5177B8; #80C615;*/
	border-left: 0px solid #80C615;
	margin: 0;
	padding: 0px 0px 0px 0px;
	font-family: Impact, sans-serif;
	font-size: 14pt;
	}

table.buttonbartable td.button1
	{
	background: #5177B8; /*#80C615;*/;
	padding: 0;
	font-weight: bold;
	text-align: center;
	cursor: hand;
	}

table.buttonbartable td.button2
	{
	background: #5177B8; /*#80C615;*/;
	font-weight: bold;
	text-align: center;
	}

table.buttonbartable td.button3
	{
	background: #5177B8; /*#80C615;*/;
	font-weight: bold;
	text-align: center;
	}

table.buttonbartable td.runninghead
	{
	padding-left: 0px;
	font-style: italic;
	text-align: left;
	}

.version
	{
	text-align: left;
	color: #000000;
	margin-top: 3em;
	margin-left: -26px;
	font-size: smaller;
	font-style: italic;
	}

.lang, .ilang
	{
	color: #0000ff;
	font: normal 7pt Arial, Helvetica, sans-serif;
	}

div.langMenu
	{
	position: absolute;
	z-index: 1;
	width: 96pt;
	padding: 8pt;
	visibility: hidden;
	border: 1px solid #000000;
	background: #ffffd0;
	}

div.langMenu ul
	{
	padding-left: 2em;
	margin-left: 0;
	}

div.filtered
	{
	margin: 4pt 0 8pt -26px;
	padding: 4px 4px 8px 26px;
	width: 100%;
	border: 2px solid #aaaacc;
	background: #ffffff;
	}

div.filtered2
	{
	margin: 4pt 0 8pt -26px;
	padding: 4px 4px 8px 26px;
	width: 100%;
	border: none;
	background: #ffffff;
	}

div.filtered h1, div.filtered h2, div.filtered h3, div.filtered h4
	{
	margin-left: -22px;
	}

div.filtered span.lang
	{
	position: relative;
	left: -22px;
	}

div.reftip
	{
	position: absolute;
	z-index: 1;
	padding: 8pt;
	visibility: hidden;
	border: 1px solid #000000;
	background: #ffffd0;
	}

a.synParam
	{
	color: #0000FF;
	/*color: #3F7800;*/ 	
	/*color: #8DC54F;*/
	text-decoration: none;
    font-weight: normal;
	}

a.synParam:hover
	{
	text-decoration: underline;
    font-weight: normal;
	}

div.sapop
	{
	position: absolute;
	z-index: 1;
	left: 26px;
	width: 100%;
	padding: 10px 10px 10px 36px;
	visibility: hidden;
	border: 1px solid #000000;
	background: #ffffd0;
	}

div.footer
	{
	width: 100%;
	border: none;
	background: #ffffff;
	margin-top: 18pt;
	padding-bottom: 12pt;
	color: #0000FF;
	/*color: #228B22; */
	text-align: center;
	font-size: 76%;
	}

div.preliminary
	{
	margin-top: 8pt;
	padding-bottom: 12pt;
	color: #A0A0A0;
	}

/* A procedure section. eg. 'To create a file', 'To add a value' */
div.proc
    {
	margin-left: 0.5em; 
    }
     
/* The title of a 'procedure' section. */
div.proc h3
    {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-weight: bold;
	font-size: 115%;
	margin-top: 1em;
	margin-bottom: 0.4em;
	margin-left: -0.5em; 
	color: #003399;
    }

div.proc ul
    {
    margin-left: 1.5em;
    }

div.proc ol
    {
    margin-left: 2.0em;
    }
      
.note
	{
	margin-left: 14pt;
	margin-right: 12pt;
	}

.indent1
	{
	margin-left: 12pt;
	}

.indent2
	{
	margin-left: 24pt;
	}

.indent3
	{
	margin-left: 36pt;
	}

p.proch
	{
	padding-left: 16px;
	}

p.proch img
	{
	position: relative; 
	vertical-align: top;
	left: -18px; 
	margin-right: -14px; 
	margin-bottom: -18px;
	}
	
div.clsPlatSpec
{
	background-color:#FFF8DC;
	border-style:solid;
	border-width:1pt 0pt 0pt 1pt;
	border-color:#ffE4C4;
	margin-top:0.6em;
	width:100%;
}


/* Applies to the language labels in the Language Filter drop-down list. */
.languageFilter
{
	color:	#0000FF;
	cursor:hand;
	text-decoration:underline;
	padding-bottom:4;
}

/* Dropdown areas */

#languageSpan {
	position: absolute;
	visibility: hidden;
	border-style: solid;
	border-width: 1px;
	border-color: #C8CDDE;
	background: #d4dfff;
	padding: 4px;
	font-size: 70%;
}

#membersOptionsSpan {
	position: absolute;
	visibility: hidden;
	border-style: solid;
	border-width: 1px;
	border-color: #C8CDDE;
	background: #d4dfff;
	padding: 4px;
	font-size: 70%;
}
--></style>

<xml>
<MSHelp:TOCTitle Title="Robot Game" />
<MSHelp:RLTitle Title="Robot Game" />
<MSHelp:Keyword Index="A" Term="O:Microsoft.Xna.RobotGame" />
<MSHelp:Keyword Index="A" Term="ea252f15-4b2b-e6fa-1d24-b51292d53a41" />
<MSHelp:Keyword Index="K" Term="Robot Game" />
<MSHelp:Attr Name="ProjType" Value="LocalProj" />
<MSHelp:Attr Name="ProjType" Value="XNA_30" />
<MSHelp:Attr Name="DocSet" Value="XNA" />
<MSHelp:Attr Name="DocSet" Value="ExpressLibVS" />
<MSHelp:Attr Name="DocSet" Value="C#" />
<MSHelp:Attr Name="Locale" Value="en-us" />
<MSHelp:Attr Name="CommunityContent" Value="1" />
<MSHelp:Attr Name="AssetID" Value="ea252f15-4b2b-e6fa-1d24-b51292d53a41" />
<MSHelp:Attr Name="TopicType" Value="kbOrient" />
</xml>
</head><body><div id="mainSection"><div id="mainBody">
	<h1>Robot Game</h1>
	

	<p>This topic contains the following sections.</p>
	<ul><li><a href="#ID2EP">Introduction to Robot Game</a></li><li><a href="#ID2EKB">System Requirements</a></li><li><a href="#ID2E2B">Getting Started</a></li><li><a href="#ID2END">Game Controls</a></li><li><a href="#ID2EDBAC">Implementation Notes</a></li><li><a href="#ID2EKCAC">Extending Robot Game</a></li></ul>

	<a name="ID2EP"></a><h1 class="heading">Introduction to Robot Game</h1><div id="ID2EP" class="hxnx1">
		

		<p>
      The Robot Game Kit is a complete mini game for XNA Game Studio. The project comes ready to compile and run, and it's easy to customize with a little bit of C# programming. You are also free to use the source code as the basis for your own XNA Game Studio game projects, and to share your work with others.


    </p>

      <p>
        Robot Game is a three-dimensional robot combat game that demonstrates the following components:
      </p>
      <ul>
        <li>Advanced graphics using shaders and post-processing effects</li>
        <li>Advanced particle system</li>
        <li>Collision detection, 3D positional sound, input, and screens management</li>
        <li>Single-player mode and split-screen two-player versus mode</li>
        <li>Customizable game elements, such as robots, weapons, and items</li>
      </ul>


	</div>


  <a name="ID2EKB"></a><h1 class="heading">System Requirements</h1><div id="ID2EKB" class="hxnx1">
    
  <a name="ID2EOB"></a><h2 class="subHeading">Minimum Shader Profile</h2><div id="ID2EOB" class="hxnx2">
    
    <dl class="glossary">
      <dt>Vertex Shader Model 2.0</dt>
      <dt>Pixel Shader Model 2.0</dt>
    </dl>
  </div>
  </div>

  <a name="ID2E2B"></a><h1 class="heading">Getting Started</h1><div id="ID2E2B" class="hxnx1">
		

		<a name="ID2E6B"></a><h2 class="subHeading">Building and Running a Robot Game Project</h2><div id="ID2E6B" class="hxnx2">
			
			<div class="proc"><h3 class="subHeading">To build and run the Robot Game project</h3><div class="subSection">
				
				<ul>
					<li>
						<p>
							Either press F5 or, on the <b>Debug</b> menu, click <b>Start Debugging</b>.
						</p>
						<p>The project will build and then run within the debugger.</p>
					</li>
				</ul>
			</div></div>

			<div class="proc"><h3 class="subHeading">To build the project without running it</h3><div class="subSection">
				
				<ul>
					<li>
						<p>
							Either press F6 or, on the <b>Build</b> menu, click <b>Build Solution</b>.
						</p>
						<p>The project will build without running.</p>
					</li>
				</ul>
			</div></div>
		</div>

	</div>

	<a name="ID2END"></a><h1 class="heading">Game Controls</h1><div id="ID2END" class="hxnx1">
		
		<p>You can use a keyboard or Xbox 360 controller to play Robot Game. The controls are as follows:</p>
		<table>
			<tr>
				<th>Action</th>
				<th>Gamepad Control</th>
				<th>Keyboard P1 Control</th>
        <th>Keyboard P2 Control</th>
			</tr>
      <tr>
        <td>Select a menu entry.</td>
        <td>Left thumb stick</td>
        <td>
          <b>W</b>, <b>A</b>, <b>S</b>, and <b>D</b>
      </td>
        <td>UP ARROW, DOWN ARROW, LEFT ARROW, and RIGHT ARROW</td>
      </tr>
      <tr>
        <td>Accept the menu selection.</td>
        <td>
          <b>A</b>
        </td>
        <td>SPACEBAR, ENTER</td>
        <td>None</td>
      </tr>
      <tr>
        <td>Cancel the menu.</td>
        <td>
          <b>B</b>
        </td>
        <td>ESC</td>
        <td>None</td>
      </tr>
      <tr>
        <td>Exit the current screen.</td>
        <td>
          <b>START, BACK</b>
        </td>
        <td>ESC</td>
        <td>None</td>
      </tr>
      <tr>
        <td>Move the robot.</td>
        <td>Left thumb stick</td>
        <td>
          <b>W</b>, <b>A</b>, <b>S</b>, and <b>D</b>
        </td>
        <td>UP ARROW, DOWN ARROW, LEFT ARROW, and RIGHT ARROW</td>
      </tr>
      <tr>
        <td>Turn the robot.</td>
        <td>Right thumb stick</td>
        <td>
          <b>F, H</b>
        </td>
        <td>Num Pad 4, 6</td>
      </tr>
      <tr>
        <td>Fire the current weapon.</td>
        <td>Right trigger</td>
        <td>
          <b>G</b>
        </td>
        <td>Num Pad 5</td>
      </tr>
      <tr>
        <td>Reload the current weapon.</td>
        <td>Right bumper</td>
        <td>
          <b>T</b>
        </td>
        <td>Num Pad 8</td>
      </tr>
      <tr>
        <td>Ignite boosters.</td>
        <td>Left trigger</td>
        <td>SPACEBAR</td>
        <td>Num Pad 0</td>
      </tr>
      <tr>
        <td>Switch the current weapon.</td>
        <td>Left bumper</td>
        <td>
          <b>V</b>
        </td>
        <td>Num Pad 1</td>
      </tr>

      <tr>
        <td>
          Toggle camera mode
          (Debug configuration only)
        </td>
        <td>Left thumb stick button</td>
        <td>ENTER</td>
        <td>None</td>
      </tr>

    </table>
  </div>

  <a name="ID2EDBAC"></a><h1 class="heading">Implementation Notes</h1><div id="ID2EDBAC" class="hxnx1">
    

    <a name="ID2EHBAC"></a><h2 class="subHeading">Customizable Assets</h2><div id="ID2EHBAC" class="hxnx2">
      
      <ul>
        <li>Gameplay data, such as level specifications, robot specifications, and item specifications, are implemented as XML files. These files require no processing, and they are loaded at run time via the XML serialization system. They are included directly in the game project rather than the content project, and the files must be set to copy to the output directory for the game to function.</li>
        <li>Animations (.Animation files) and particle systems (.Particle files) are internally implemented as XML data, but this implementation detail is abstracted by the XNA Content Pipeline importer, processor, and writer types specified in the RobotGameProcessors project. All content of these types must use their respective importers and processors, and the custom file extensions instruct Visual Studio to make those assignments by default.</li>
        <li>Normal map and specular map textures are stored as user string properties of the models in Maya.</li>
      </ul>
    </div>
    <a name="ID2EVBAC"></a><h2 class="subHeading">Debugging Assistance</h2><div id="ID2EVBAC" class="hxnx2">
      
      <ul>
        <li>To enable invulnerability for the player's robots, set the initialization value of the <b>debugMode</b> field in the <b>GamePlayer</b> class, found in the game project.</li>
        <li>The framerate of the game is shown only in debug mode. This functionality is implemented in the <b>FpsCounter</b> class in the data project, in the Helper subdirectory.</li>
      </ul>
    </div>
  </div>

  <a name="ID2EKCAC"></a><h1 class="heading">Extending Robot Game</h1><div id="ID2EKCAC" class="hxnx1">
    

    <p>There are many possible ways to modify or improve Robot Game:</p>
    <ul>
      <li>
        <b>Create or modify 3D models and animations:</b> The 3D models for RobotGame are in the Autodesk FBX format (.fbx). Most 3D design tools will export to this format. The specification of each robot’s model is within each robot’s .spec file, in the <b>ModelFilePath</b> section. However, note that if the model’s bones do not match the associated animation files, then the game will not function properly.
      </li>
      <li><b>Change gameplay data:</b>  The data for each level (.level), all items (.spec), weapons (.spec), and robots (.spec) are stored as XML. This makes it easy to open each file and change the values, including power, speed, position, etc.
      </li>
      <li>
        <b>Change particle systems:</b>  The data for particle systems (.Particle) is stored as XML. This makes it easy to customize the particle systems used in the game. </li>
    </ul>
  </div>

</div><div class="footer" id="footer"><p>© 2008 Microsoft Corporation. All rights reserved.<br>Send feedback to <a href="mailto:xnags@microsoft.com?subject=Documentation Feedback: Robot Game">xnags@microsoft.com</a>.</p></div></div></body></html>